#ifndef RESETDIALOG_H
#define RESETDIALOG_H

#include <QDialog>
#include "global.h"
#include <QMap>
#include <functional>
#include <QJsonObject>
#include <QJsonDocument>


namespace Ui {
class ResetDialog;
}

class ResetDialog : public QDialog
{
    Q_OBJECT

public:
    explicit ResetDialog(QWidget *parent = nullptr);
    ~ResetDialog();

//私有方法
private slots:
    void on_verify_btn_clicked();

    void on_sure_btn_clicked();

    void on_return_btn_clicked();

private:
    bool checkUserValid();
    bool checkEmailValid();
    bool checkPassValid();
    bool checkVerifyValid();

    void AddTipErr(TipErr te,QString tips);
    void DelTipErr(TipErr te);
    void showTip(QString tips,bool b_ok);
    void initHandlers();

    void GetVerifyCode(const QJsonObject& obj);
    void ResetPassword(const QJsonObject& obj);

//私有属性
private:
    Ui::ResetDialog *ui;
    QMap<TipErr,QString> _tip_errs;
    QMap<ReqId,std::function<void(const QJsonObject &)>> _handlers;


signals:
    void switchLogin();
public slots:
    void slot_reset_mod_finish(ReqId req_id, QString res, ErrorCodes err);

};

#endif // RESETDIALOG_H
